When a computer system utilizes multiple processors to process network traffic received from network interface cards (NICs), the NICs distribute the processing of the traffic by interrupting the processors when the NIC receives the network packets. These packets are typically collected in a queue, and based on some predetermined criteria such as a Media Access Control (MAC) address, they are directed to a processor that matches the criteria.
It is not uncommon for a NIC to be serviced by multiple processors. One NIC may contain multiple queues and each queue is associated with a single processor. Typically, the total number of processors and the way that they are mapped, to queues are static during runtime. Generally, a static configuration cannot adjust to the change in network load, which may lead to a suboptimal system performance.
A static configuration is particularly troublesome when too many queues with high network traffic are mapped to too few processors, which often results in a processor bottleneck and lower throughput. Additionally, when queues with light network load are statically mapped to too many processors, the system will utilize processors unnecessarily and waste processing power. Thus, when both the number of processors and the network queue mapping scheme to those processors are static, the system may not run in the most efficient manner.